#!/bin/bash

# MySQL MCP Server 独立打包脚本
# 创建可分发的独立包，不依赖外部网络

set -e

echo "=== MySQL MCP Server 独立打包工具 ==="

# 检查Python环境
if ! command -v python3 &> /dev/null; then
    echo "❌ Python3未找到"
    exit 1
fi

PYTHON_VERSION=$(python3 --version 2>&1 | cut -d' ' -f2 | cut -d'.' -f1-2)
echo "✓ Python版本: $PYTHON_VERSION"

# 创建打包目录
PACKAGE_DIR="./mysql-mcp-server-package"
rm -rf "$PACKAGE_DIR"
mkdir -p "$PACKAGE_DIR"

echo "✓ 创建打包目录: $PACKAGE_DIR"

# 复制源代码
cp -r src/ "$PACKAGE_DIR/"
cp requirements.txt "$PACKAGE_DIR/"
cp setup.py "$PACKAGE_DIR/"
cp README.md "$PACKAGE_DIR/" 2>/dev/null || echo "README.md not found, creating basic one"
cp LICENSE "$PACKAGE_DIR/" 2>/dev/null || echo "LICENSE not found, skipping"

# 如果没有README，创建一个基本的
if [ ! -f "$PACKAGE_DIR/README.md" ]; then
    cat > "$PACKAGE_DIR/README.md" << 'EOF'
# MySQL MCP Server

MySQL Model Context Protocol (MCP) Server implementation.

## Installation

```bash
pip install -r requirements.txt
pip install -e .
```

## Usage

```bash
python -m src.mysql_mcp_server.main --help
```

## Configuration

Set environment variables:
- MYSQL_HOST: MySQL server host (default: localhost)
- MYSQL_PORT: MySQL server port (default: 3306)
- MYSQL_USER: MySQL username
- MYSQL_PASSWORD: MySQL password
- MYSQL_DATABASE: MySQL database name
EOF
fi

echo "✓ 复制项目文件"

# 创建安装脚本
cat > "$PACKAGE_DIR/install.sh" << 'EOF'
#!/bin/bash

# MySQL MCP Server 安装脚本

set -e

echo "=== MySQL MCP Server 安装 ==="

# 检查Python
if ! command -v python3 &> /dev/null; then
    echo "❌ 需要Python 3.7+，请先安装Python"
    exit 1
fi

PYTHON_VERSION=$(python3 --version 2>&1 | cut -d' ' -f2)
echo "✓ Python版本: $PYTHON_VERSION"

# 检查pip
if ! command -v pip3 &> /dev/null && ! command -v pip &> /dev/null; then
    echo "❌ 需要pip，请先安装pip"
    exit 1
fi

PIP_CMD="pip3"
if ! command -v pip3 &> /dev/null; then
    PIP_CMD="pip"
fi

echo "✓ 使用pip: $PIP_CMD"

# 创建虚拟环境（可选）
if [ "$1" = "--venv" ]; then
    echo "创建虚拟环境..."
    python3 -m venv venv
    source venv/bin/activate
    PIP_CMD="pip"
    echo "✓ 虚拟环境已激活"
fi

# 安装依赖
echo "安装依赖..."
$PIP_CMD install --upgrade pip
$PIP_CMD install -r requirements.txt

# 安装项目
echo "安装项目..."
$PIP_CMD install -e .

echo "✅ 安装完成!"
echo ""
echo "使用方法:"
echo "  python -m src.mysql_mcp_server.main --help"
echo ""
if [ "$1" = "--venv" ]; then
    echo "注意: 使用虚拟环境时，请先运行 'source venv/bin/activate'"
fi
EOF

chmod +x "$PACKAGE_DIR/install.sh"
echo "✓ 创建安装脚本"

# 创建运行脚本
cat > "$PACKAGE_DIR/run.sh" << 'EOF'
#!/bin/bash

# MySQL MCP Server 运行脚本

# 检查是否在虚拟环境中
if [ -d "venv" ] && [ -z "$VIRTUAL_ENV" ]; then
    echo "检测到虚拟环境，正在激活..."
    source venv/bin/activate
fi

# 运行服务器
python -m src.mysql_mcp_server.main "$@"
EOF

chmod +x "$PACKAGE_DIR/run.sh"
echo "✓ 创建运行脚本"

# 创建配置示例
cat > "$PACKAGE_DIR/config.env.example" << 'EOF'
# MySQL MCP Server 配置示例
# 复制此文件为 config.env 并填入实际值

# MySQL连接配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database

# 可选配置
# MCP_SERVER_PORT=8080
# DEBUG=false
EOF

echo "✓ 创建配置示例"

# 创建启动脚本（使用配置文件）
cat > "$PACKAGE_DIR/start-with-config.sh" << 'EOF'
#!/bin/bash

# 使用配置文件启动MySQL MCP Server

CONFIG_FILE="config.env"

if [ ! -f "$CONFIG_FILE" ]; then
    echo "❌ 配置文件 $CONFIG_FILE 不存在"
    echo "请复制 config.env.example 为 config.env 并填入配置"
    exit 1
fi

echo "✓ 加载配置文件: $CONFIG_FILE"
export $(cat $CONFIG_FILE | grep -v '^#' | xargs)

# 检查是否在虚拟环境中
if [ -d "venv" ] && [ -z "$VIRTUAL_ENV" ]; then
    echo "✓ 激活虚拟环境..."
    source venv/bin/activate
fi

echo "✓ 启动MySQL MCP Server..."
python -m src.mysql_mcp_server.main "$@"
EOF

chmod +x "$PACKAGE_DIR/start-with-config.sh"
echo "✓ 创建配置启动脚本"

# 创建打包信息
cat > "$PACKAGE_DIR/PACKAGE_INFO.txt" << EOF
MySQL MCP Server 独立包
=====================

打包时间: $(date)
Python版本: $PYTHON_VERSION
系统: $(uname -s) $(uname -m)

文件说明:
- src/: 源代码目录
- requirements.txt: Python依赖
- setup.py: 安装配置
- install.sh: 安装脚本
- run.sh: 运行脚本
- start-with-config.sh: 使用配置文件启动
- config.env.example: 配置文件示例

安装步骤:
1. 运行 ./install.sh (或 ./install.sh --venv 使用虚拟环境)
2. 复制 config.env.example 为 config.env 并填入配置
3. 运行 ./start-with-config.sh

或者直接运行:
./run.sh --help
EOF

echo "✓ 创建打包信息"

# 创建压缩包
ARCHIVE_NAME="mysql-mcp-server-$(date +%Y%m%d-%H%M%S).tar.gz"
tar -czf "$ARCHIVE_NAME" -C . "$(basename "$PACKAGE_DIR")"

echo "✅ 打包完成!"
echo ""
echo "=== 打包结果 ==="
echo "目录: $PACKAGE_DIR"
echo "压缩包: $ARCHIVE_NAME"
echo ""
echo "=== 使用方法 ==="
echo "1. 解压: tar -xzf $ARCHIVE_NAME"
echo "2. 进入目录: cd $(basename "$PACKAGE_DIR")"
echo "3. 安装: ./install.sh"
echo "4. 配置: cp config.env.example config.env (然后编辑)"
echo "5. 运行: ./start-with-config.sh"
echo ""
echo "或者直接测试:"
echo "cd $PACKAGE_DIR && ./install.sh && ./run.sh --help"